package com.itheima.leetcode.od.b.greedy;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * (A卷,100分)- 最大利润（Java & JS & Python）
 * <p>
 * 套皮Leetcode122-买卖股票的最佳时机 II - 贪心
 * <p>
 * 题目描述
 * <p>
 * 商人经营一家店铺，有number种商品，
 * 由于仓库限制每件商品的最大持有数量是item[index]
 * 每种商品的价格是item-price[item_index][day]
 * 通过对商品的买进和卖出获取利润
 * 请给出商人在days天内能获取的最大的利润
 * 注：同一件商品可以反复买进和卖出
 * <p>
 * 输入描述
 * <p>
 * 第一行输入商品的数量number，比如3
 * <p>
 * 第二行输入商品售货天数 days，比如3
 * <p>
 * 第三行输入仓库限制每件商品的最大持有数量是item[index]，比如4 5 6
 * <p>
 * 后面继续输入number行days列，含义如下：
 * <p>
 * 第一件商品每天的价格，比如1 2 3
 * <p>
 * 第二件商品每天的价格，比如4 3 2
 * <p>
 * 第三件商品每天的价格，比如1 5 3
 * <p>
 * 输出描述
 * <p>
 * 输出商人在这段时间内的最大利润。
 * <p>
 * 用例
 * <p>
 * 输入	3
 * <p>
 * 3
 * <p>
 * 4 5 6
 * <p>
 * 1 2 3
 * <p>
 * 4 3 2
 * <p>
 * 1 5 2
 * <p>
 * 输出	32
 * <p>
 * 说明	无
 */
public class MaximumProfit {
    public static void main(String[] args) {
        /*// 处理输入
        Scanner in = new Scanner(System.in);
        int item_number = Integer.parseInt(in.nextLine());
        int days = Integer.parseInt(in.nextLine());

        List<Integer> max_items = Arrays.stream(in.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());
        List<ArrayList<Integer>> prices = new ArrayList<ArrayList<Integer>>();
        for (int i = 0; i < item_number; i++) {
            List<Integer> item_price = Arrays.stream(in.nextLine().split(" "))
                    .map(Integer::parseInt)
                    .collect(Collectors.toList());
            prices.add(new ArrayList<>(item_price));
        }*/

        String input1 = "4 5 6";
        List<Integer> max_items = Arrays.stream(input1.split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        String input2 = "1 2 3\n4 3 2\n1 5 2";
        List<List<Integer>> prices = Arrays.stream(input2.split("\n"))
                .map(s -> Arrays.stream(s.split(" "))
                        .map(Integer::parseInt)
                        .collect(Collectors.toList()))
                .collect(Collectors.toList());

        System.out.println(getResult(max_items, prices));
    }

    /**
     * 贪心算法
     *
     * @param max_items
     * @param prices
     * @return
     */
    public static String getResult(List<Integer> max_items, List<List<Integer>> prices) {
        int max_profit = 0;
        for (int i = 0; i < prices.size(); i++) {
            int ans = 0;
            for (int j = 1; j < prices.get(i).size(); j++) {
                ans += Math.max(0, prices.get(i).get(j) - prices.get(i).get(j - 1));
            }
            max_profit += ans * max_items.get(i);
        }

        return String.valueOf(max_profit);
    }
}